//package 笔试;
//
//import java.util.*;
//
//public class 一对一 {
//    static Map map;
//    static ArrayList[] edges;
//    static int n;
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        n = sc.nextInt();
//        map = new HashMap<>();
//        edges = new ArrayList[n+3];
//        for(int i = 0; i < n+3; i++) {
//            edges[i] = new ArrayList();
//        }
//        for(int i = 0; i < n-1; i++) {
//            int tmp = sc.nextInt();
//            edges[tmp].add(i+2);
//            edges[i+2].add(tmp);
//        }
//        System.out.println(dfs(1, 1, -1));
//    }
//
//    static int dfs(int canuse, int idx, int pre) {
//        int arr = idx * canuse;
//        if (map.containsKey(arr)) {
//            return (int)map.get(arr);
//        }
//        int cnt = 0;
//        for (int next : edges[idx]) {
//            if (next != pre) {
//                cnt += dfs(1, next, idx);
//            }
//        }
//        int ret = cnt;
//        if (canuse == 1) {
//            for(int next: edges[idx]) {
//                if(next != pre) {
//                    int f = dfs(-1, next, idx);
//                    int t = dfs(1, next, idx);
//                    ret = Math.max(ret, cnt - t + f + 1);
//                }
//            }
//        }
//        map.put(arr, ret);
//        return ret;
//    }
//}
